

// 希望后端根据浏览器的请求做不同的处理
//    需要加载首页的时候   就去读取  Index.html 的内容
//    需要加载注册的时候   就去读取  reg.html 的内容

// 后端需要根据路径的改变作出相应的判断

// 约定
//   静态资源文件  /static开头   /static/html/index.html   /static/css/index.css


// 处理ajax请求   /api/a    /api/b


// 模拟数据库中的数据
const mockData = [
    {
        id: '1',
        username: 'yy',
        password: '123'
    },
    {
        id: '2',
        username: 'cc',
        password: '666'
    }
]




const http = require('http');

const fs = require('fs');

const url = require('url');

// 解析路径
const path = require('path');

const server = http.createServer((req, res) => {
    let pathname = req.url;

    if (pathname === '/') {
        pathname = '/static/html/index.html'
    }
    // 单独处理图标
    // 处理静态资源文件  html  css  js
    // 处理ajax请求

    if (pathname === '/favicon.ico') {
        console.log('没有图');
    }

    // 静态资源
    else if (/^\/static/.test(pathname)) {

        const { base, ext } = path.parse(pathname);    // base名称  ext后缀

        let filename = '../client/';

        if (ext === '.html') {
            filename += 'html/'
        }
        else if (ext === '.css') {
            filename += 'css/'
        }

        else if (ext === '.js') {
            filename += 'js/'
        }

        filename += base;

        fs.readFile(filename, 'utf-8', (err, data) => {
            if (err) return console.log(err)
            res.end(data);
        })
    }

    // 处理ajax请求
    else if (/^\/api/.test(pathname)) {
        let str = req.url;   // 因为有携带参数 req.url = /api/a?username....
        let { pathname, query } = url.parse(str);
        console.log(pathname, query);
        if (pathname === '/api/a') {   // 使用get方式实现登陆接口
            if (req.method !== 'GET') {
                const obj = { status: false, msg: '请求方式不正确' }
                res.end(JSON.stringify(obj))
                return
            }

            // 拿到username和password  
            let arr = query.split('&');
            arr = arr.map(item => {
                const arr2 = item.split('=');
                const obj = {};
                obj[arr2[0]] = arr2[1];
                return obj
            })
            console.log(arr);


            // {username : 'yy' , password : '123'}
            const obj = {};
            obj.username = arr[0].username;
            obj.password = arr[1].password;
            console.log(obj);

            // 去数据库查询有没有这个数据   --- 暂时使用mockData  模拟数据
            const res1 = mockData.find(item => item.username === obj.username);
            if (res1) {
                // 匹配密码
                if (res1.password === obj.password) {
                    res.end(JSON.stringify({ status: true, msg: '登陆成功' }));
                }
                else {
                    res.end(JSON.stringify({ status: false, msg: '密码错误' }));
                }
            }
            else {
                res.end(JSON.stringify({ status: false, msg: '用户名不存在' }));
            }
        }
        else if (pathname === '/api/b') {
            res.end('注册接口')
        }
    }


})

server.listen(2000, () => console.log('服务器正在运行中...'))